<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * 로그인 컨트롤러
 */
class Login extends CI_Controller {
	
	var $data = array();
	var $return_url = '';
	
	function __construct() {
		parent::__construct();

		$this->return_url = $this->input->get('return_url');
		$this->return_url = $this->return_url != '' ? ROOT_URL.$this->return_url : ROOT_URL.'/main';
	}

	// Default
	function index() {
		$this->form();
	}

	/**
	 * 로그인 폼
	 */
	function form() {
		$this->data['is_fail'] = 'N';
		$this->load->view('member/login_v', $this->data);
	}

	/**
	 * 로그인 실패
	 */
	function fail() {
		$this->data['is_fail'] = 'Y';
		$this->load->view('member/login_v', $this->data);
	}

	/**
	 * 로그인 체크
	 */
	function check() {
		log_message('debug', "@@@@ Login::check()");

		// 폼 입력값 가져오기
		$user_id     = $this->input->post('user_id', TRUE);
		$pwd         = $this->input->post('pwd', TRUE);
		$pwd         = crypt($pwd, $this->config->item('encryption_key'));	//패스워드는 암호화해서 비교
		
		// DB 연동 처리
		$this->load->model('member/Login_model', 'model', TRUE);
		$member = $this->model->get_member($user_id);
		
		// 아이디 패스워드 체크
		if (count($member) == 0 || $pwd != $member['pwd']) {
			redirect(ROOT_URL.'/member/login/fail');
			return;
		}
		
		
		// 보너스 포인트
		$lastest_logged_date = substr($member['login_dt'],0,10);	// 최종 접속일자
		$today = date('Y-m-d',time());
		$yesterday = date('Y-m-d',strtotime("-1 day",time()));
		
		log_message('debug', "@@ lastest_logged_date=$lastest_logged_date");
		log_message('debug', "@@ today=$today");
		
		if ($lastest_logged_date != $today) {
			$this->load->model('point/Point_model', 'point_model', TRUE);

			// 2일연속 출석
			if ($lastest_logged_date == $yesterday) {
				$this->point_model->update_activity_point($user_id, 'LOGIN_2DAY');
			}
			// 비연속 출석
			else {
				$this->point_model->update_activity_point($user_id, 'LOGIN');
			}
		}

		// 로그인 시간,IP 기록
		$this->model->update_login_info($user_id, $_SERVER['REMOTE_ADDR']);
		
		// 세션 저장
		$arr_userinfo = array(
			'login_yn'   => 'Y',
			'user_id'    => $member['user_id'],
			'user_name'  => $member['user_name'],
			'nickname'   => $member['nickname'],
			'package_cd' => $member['package_cd']
		);
		$this->session->set_userdata('userinfo', $arr_userinfo);
		
		// 로그인 성공후 이동할 페이지 지정
		redirect($this->return_url, 'refresh');
	}

	/**
	 * 로그아웃
	 */
	function logout() {
		$this->session->unset_userdata('userinfo');

		// 로그아웃 후 이동할 페이지 지정
		redirect($this->return_url, 'refresh');
	}

	/**
	 * 아이디/패스워드 찾기 폼
	 */
	function find() {
		$this->load->view('member/find_v', $this->data);
	}

	/**
	 * 아이디 찾기 결과
	 */
	function find_id_result() {
		$ipin_di = $this->input->post('ipin_di');

		$this->load->model('member/Login_model', 'model', TRUE);
		$user_id = $this->model->get_member_id($ipin_di);
		
		$this->data['type'] = 'id';

		if (!empty($user_id)) {
			// $user_id_len = strlen($user_id);
			// $user_id_cut = substr($user_id, 0, 3);
			// $user_id_cut = str_pad($user_id_cut, $user_id_len, '*');
			
			$this->data['result_yn'] = 'Y';
			$this->data['user_id_cut'] = $user_id;

		} else {
			$this->data['result_yn'] = 'N';
		}
		$this->load->view('member/find_result_v', $this->data);
	}

	/**
	 * 패스워드 찾기 결과
	 */
	function find_pw_result() {
		$ipin_di = $this->input->post('ipin_di');
		$user_id = $this->input->post('user_id');

		// 아이디, 이메일 
		$this->load->model('member/Login_model', 'model', TRUE);
		$member = $this->model->get_member_id_email($ipin_di);

		$this->data['type'] = 'pw';
		
		// 가입된 회원 없음.
		if (empty($member) || $member['user_id'] != $user_id) {
			$this->data['result_yn'] = 'N';
			$this->load->view('member/find_result_v', $this->data);
			return;
		}
		
		// 패스워드 생성, 변경
		$pwd = substr($this->session->userdata('session_id'), 0, 10);
		$pwd_crypt = crypt($pwd, $this->config->item('encryption_key'));
		
		$this->model->update_member_pwd($user_id, $pwd_crypt);
		
		// 메일발송
		$this->send_email_password($member['email'], $member['user_id'], $pwd);
		
		$this->data['result_yn'] = 'Y';
		$this->data['email'] = $member['email'];

		$this->load->view('member/find_result_v', $this->data);
	}
	
	/**
	 * 패스워드 찾기 메일발송
	 */
	function send_email_password($to_email, $user_id, $pwd) {
		log_message('debug',"#### Unse_model::send_email_password($to_email, $user_id, $pwd)");
		
		$params['to_email'] = $to_email;
		$params['user_id']  = $user_id;
		$params['pwd']      = $pwd;

		$url = SSL_ROOT_URL."/external/xpm4/mail-relay.php";
		$req = new HttpRequest($url, HttpRequest::METH_POST);
		$req->addPostFields($params);

		try {
			$return_obj = $req->send()->getBody();
			$this->logsql->log_result($return_obj);
			return TRUE;
		} catch (HttpException $ex) {
			log_message('error','## 운세데이터를 가져오는 중 에러 발생');
			echo $ex;
			return FALSE;
		}
	}

}

/* End of file login.php */